草庐IT

C++:const char * 到 stringstream

全部标签

c++ - stringstream clear 和 str 有什么区别

我只是想知道clear()和str("")之间有什么区别;例如:stringstreamss("StackOverflow");ss.clear();ss.str("");我想知道潜在的技术差异。 最佳答案 clear()清除stringstream中的错误状态标志。也就是说它将错误状态设置为goodbit(等于零)。str("")将关联的字符串对象设置为空字符串。他们实际上做着完全不同的事情。名字的特殊选择只会让它听起来好像他们执行类似的任务。 关于c++-stringstreamcl

c++ - 可以使用临时的 stringstream 对象吗?

这个有效:stringstreamtemp;temp(transform是一个接受string并返回string的函数;i是一个int)。然而,我试图让C++11创建一个没有名字的临时对象并没有奏效:result_stream我认为它会起作用,因为第二个应该只返回第一个参数,我就可以使用str()在那上面。但是我得到这个错误:error:'classstd::basic_ostream'hasnomembernamed'str'我正在使用g++4.8.1(MinGW-W64)。有没有办法做到这一点(即使用未命名的临时文件编写这样的代码)?(上面的代码有点简化,实际代码涉及对以外的参数使

c++ - std::stringstream 的默认 `fill character` 是什么?

它是实现定义的还是标准建议流的默认填充字符?示例代码:#include#include#includeintmain(){std::stringstreamstream;stream使用clang++--stdlib=libstdc++$clang++--stdlib=libstdc++test.cpp$./a.out|hexdump0000000202020202020202032350a0a000000c$使用clang++--stdlib=libc++$clang++--stdlib=libc++test.cpp$./a.out|hexdump0000000fffffffffff

C++ 在 << 作为参数后使用 stringstream

是否可以编写一个接受字符串流并使其看起来像这样的方法,voidmethod(stringstr)voidprintStringStream(StringStream&ss){method(ss.str());}可以这样调用stringstreamvar;printStringStream(var我查找了ostream&对象,但我可能正在阅读this错误或只是没有正确实现。我真正想要的只是一种干净的方法,可以将内容作为字符串连接在一起并将其传递给函数。我能找到的最干净的东西是一个stringstream对象,但仍然有很多不足之处。注意事项:我不能使用很多c++11答案,因为我在Visua

c++ - `std::stringstream::fail()` 读后写应该返回什么值? (海湾合作委员会与 clang )

考虑以下代码片段:#include#includeintmain(){std::stringstreamss;ss>s;ssclang++trunk打印出如下结果:ss.eof()=truess.good()=falsess.bad()=falsess.fail()=falsess.str()=12345onwandboxg++trunk打印如下结果:ss.eof()=truess.good()=falsess.bad()=falsess.fail()=truess.str()=12345onwandbox如您所见,ss.fail()的值在两个编译器之间是不同的。在这种情况下,标准对s

c++ - std::stringstream 可以设置失败/坏位的方法?

我用于简单字符串拆分的一段常见代码如下所示:inlinestd::vectorsplit(conststd::string&s,chardelim){std::vectorelems;std::stringstreamss(s);std::stringitem;while(std::getline(ss,item,delim)){elems.push_back(item);}returnelems;}有人提到这会默默地“吞下”std::getline中发生的错误。当然,我同意是这样的。但我突然想到,在实践中这里可能会出现什么问题,我需要担心。基本上这一切都归结为:inlinestd::

c++ - 从 std::stringstream 读取 uint8_t 作为数字类型

我的理解是,从stringstream读取uint8_t是一个问题,因为stringstream将解释uint8_t作为char。我想知道如何从stringstream中读取uint8_t作为数字类型。比如下面的代码:#include#includeusingnamespacestd;intmain(){uint8_tui;std::stringstreamss("46");ss>>ui;cout打印出52。我希望它打印出46。编辑:另一种方法是从stringstream中读取一个string,然后将解决方案转换为uint8_t,但这破坏了nice链接属性。比如在我实际要写的代码中,经

c++ - 对于字符串对象连接,stringstream 是否比字符串的运算符 '+' 更好?

比如我有两个字符串对象:stringstr_1,str_2。我想连接到他们。我可以使用两种方法:方法一:std::stringstreamss;//std::stringstr_1("hello");//std::stringstr_2("world");ss方法二:std::stringstr_1("hello");std::stringstr_2("world");conststd::stringdst_str=str_1+str_2;因为字符串的缓冲区是只读的,当你改变字符串对象时,它的缓冲区会被销毁并创建一个新的缓冲区来存储新的内容。那么方法一比方法二好吗?我的理解正确吗?

C++ std::stringstream operator<< 重载

我有以下类(class)(原型(prototype)):classToken{public://members,etc.friendstd::stringstream&operator运算符是这样实现的:std::stringstream&operator现在,我尝试像这样使用它:std::stringstreamout;Tokent;//initialization,etc.outVS给我报错,说 最佳答案 std::stringstream&operator应该是std::ostream&operator

c++ - 如何读取动态大小的stringstream?

我想尝试使用stringstream进行作业,但我对它的工作原理有点困惑。我进行了快速搜索,但找不到任何可以回答我问题的内容。假设我有一个动态大小的流,我怎么知道什么时候停止写入变量?stringvar="2++asdf3*c";stringstreamss;ss>var;cout我的输出是:2++asdf3*cc我不确定为什么最后会有额外的“c”,尤其是因为_M_in_cur=0x1001000d7"" 最佳答案 你在最后得到了额外的c,因为你在执行提取后没有测试流是否仍然良好:while(ss)//testifstreamisg